package tesis.ProyectoFianl.Vista;

import java.util.ArrayList;

import tesis.ProyectoFianl.Entidades.Hospital;
import tesis.ProyectoFianl.Logica.DAOHospital;
import tesis.ProyectoFianl.Logica.DAOUbicacion;
import tesis.ProyectoFinal.BusWay.R;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewAnimator;

public class ActivityHospital extends Activity
{
	private Spinner spHospital;
	private ViewAnimator viewAnimator1;
	
	private EditText edtNombre;
	private EditText edtDireccion;
	private EditText edtTelefono;
	
	private Button btnModificar;
	private Button btnGuardar;
	private Button btnNuevo;
	private Button btnCancelarModi;
	private Button btnCancelarAlta;
	
	private LinearLayout llFiltroHospital;
	
	private TableRow trBotonera1;
	private TableRow trBotonera2;
	
	private TextView txtNombre;	
	private TextView txtDireccion;
	private TextView txtTelefono;
	
	Hospital hospital;
	
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.pantalla_hospital);
		
		viewAnimator1 = (ViewAnimator) findViewById(R.id.viewAnimator1);
		
		spHospital = (Spinner) findViewById(R.id.spHospital);
		
		edtNombre = (EditText) findViewById(R.id.edtNombreHospital);
		edtDireccion = (EditText) findViewById(R.id.edtDireccionHospital);
		edtTelefono = (EditText) findViewById(R.id.edtTelefonoHospital);
		
		btnModificar = (Button) findViewById(R.id.btnModificar);
		btnGuardar = (Button) findViewById(R.id.btnGuardar);
		btnNuevo = (Button) findViewById(R.id.btnNuevo);
		btnCancelarModi = (Button) findViewById(R.id.btnCancelarModi);
		btnCancelarAlta = (Button) findViewById(R.id.btnCancelarAlta);
		
		llFiltroHospital = (LinearLayout) findViewById(R.id.llFiltroHospital);
		
		trBotonera1 = (TableRow) findViewById(R.id.trBotonera1);
		trBotonera2 = (TableRow) findViewById(R.id.trBotonera2);
		
		txtNombre = (TextView) findViewById(R.id.txtNombreDesc);
		txtDireccion = (TextView) findViewById(R.id.txtDireccionDesc);
		txtTelefono = (TextView) findViewById(R.id.txtTelefonoDesc);
		
		edtNombre.setEnabled(false);
		edtDireccion.setEnabled(false);
		edtTelefono.setEnabled(false);
		btnGuardar.setEnabled(false);
		trBotonera2.setVisibility(View.GONE);
		
		btnModificar.setOnClickListener(clickBtnModificarHospital);
		btnGuardar.setOnClickListener(clickBtnGuardarHospital);
		btnNuevo.setOnClickListener(clickBtnNuevoHospital);
		btnCancelarAlta.setOnClickListener(clickBtnCancelarAlta);
		btnCancelarModi.setOnClickListener(clickBtnCancelarModi);
		
		cargarHospitalesSpinner(getHospital());
		
		spHospital.setOnItemSelectedListener(new  AdapterView.OnItemSelectedListener() 
	    {          
	        
	        @Override
			public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
	        {            	           	
	        	hospital = (Hospital) parent.getSelectedItem();	        
	        	
	        	txtNombre.setText("Hospital "+hospital.getNombre());
	    		txtDireccion.setText(hospital.getDireccion());
	    		txtTelefono.setText(String.valueOf(hospital.getTelefono()));
	        	
	        	edtNombre.setText(hospital.getNombre());
	    		edtDireccion.setText(hospital.getDireccion());
	    		edtTelefono.setText(String.valueOf(hospital.getTelefono()));
	    		
	    		DAOUbicacion daoUbicacion = new DAOUbicacion(ActivityHospital.this);
				daoUbicacion.listarUbicacion(hospital);
	    		
	    		edtNombre.setEnabled(false);
	    		edtDireccion.setEnabled(false);
	    		edtTelefono.setEnabled(false);
	    		btnGuardar.setEnabled(false);
	    		btnModificar.setEnabled(true);    		
	        }

			
			@Override
			public void onNothingSelected(AdapterView<?> arg0) 
			{}
	    });
	}
	
	//Metodo que se ejecuta al presionar en el boton "Modificar Hospital"
	private OnClickListener clickBtnModificarHospital = new OnClickListener()
	{
		@Override
		public void onClick(View v)
		{
			edtNombre.setEnabled(true);
			edtDireccion.setEnabled(true);
			edtTelefono.setEnabled(true);
			btnGuardar.setEnabled(true);			
			btnModificar.setVisibility(View.GONE);
			btnCancelarModi.setVisibility(View.VISIBLE);
		}
	};
	
	//Metodo que se ejecuta al presionar en el boton "Guardar Hospital"
	private OnClickListener clickBtnGuardarHospital = new OnClickListener()
	{
		@Override
		public void onClick(View v)
		{
			final ProgressDialog pd = ProgressDialog.show(ActivityHospital.this, 
                    "", "Cargando..", true);
			new Thread(new Runnable()
			{
				@Override
				public void run()
				{
					hospital.setNombre(edtNombre.getText().toString());
					hospital.setDireccion(edtDireccion.getText().toString());
					hospital.setTelefono(Integer.valueOf(edtTelefono.getText().toString()));
					DAOHospital DaoHospital = new DAOHospital(ActivityHospital.this);
					DaoHospital.update(hospital);
					pd.dismiss();				
				}
			}).start();
			edtNombre.setEnabled(false);
    		edtDireccion.setEnabled(false);
    		edtTelefono.setEnabled(false);
    		btnGuardar.setEnabled(false);
    		btnModificar.setEnabled(true);
    		
			Toast.makeText(ActivityHospital.this, "Datos modificados correctamente", Toast.LENGTH_LONG).show();
		}		
	};
	
	//Metodo que se ejecuta al presionar en el boton "Nuevo Hospital"
	private OnClickListener clickBtnNuevoHospital = new OnClickListener()
	{
		@Override
		public void onClick(View v)
		{
			final String nombre = edtNombre.getText().toString();
			final String direccion = edtDireccion.getText().toString();
			final String telefono = edtTelefono.getText().toString();
			
			if((nombre.length()==0)||(direccion.length()==0)||(telefono.length()==0))
				Toast.makeText(ActivityHospital.this, "Debe completar todos los campos", Toast.LENGTH_LONG).show();
			else
			{				
				final ProgressDialog pd = ProgressDialog.show(ActivityHospital.this, 
	                    "", "Cargando..", true);
				new Thread(new Runnable()
				{
					@Override
					public void run()
					{
						int tel = Integer.parseInt(telefono);
						hospital = new Hospital(0,nombre, direccion, tel, null);
						DAOHospital daoHospital = new DAOHospital(ActivityHospital.this);
						daoHospital.insert(hospital);
						pd.dismiss();				
					}
				}).start();
				Toast.makeText(ActivityHospital.this, "Datos ingresados correctamente", Toast.LENGTH_LONG).show();
				edtNombre.setEnabled(false);
				edtDireccion.setEnabled(false);
				edtTelefono.setEnabled(false);
				btnGuardar.setEnabled(false);
				btnModificar.setEnabled(true);
				llFiltroHospital.setVisibility(View.VISIBLE);
				trBotonera1.setVisibility(View.VISIBLE);
				trBotonera2.setVisibility(View.GONE);
								
				cargarHospitalesSpinner(getHospital());
			}
		}
	};
	
	//Metodo que se ejecuta al presionar en el boton "Cancelar Alta"
	private OnClickListener clickBtnCancelarAlta = new OnClickListener()
	{
		@Override
		public void onClick(View v)
		{	
			edtNombre.setEnabled(false);
			edtDireccion.setEnabled(false);
			edtTelefono.setEnabled(false);
			btnGuardar.setEnabled(false);
			btnModificar.setEnabled(true);
			llFiltroHospital.setVisibility(View.VISIBLE);
			trBotonera1.setVisibility(View.VISIBLE);
			trBotonera2.setVisibility(View.GONE);
			
			viewAnimator1.showNext();
							
			cargarHospitalesSpinner(getHospital());
		}
	};
	
	//Metodo que se ejecuta al presionar en el boton "Cancelar Modi"
	private OnClickListener clickBtnCancelarModi = new OnClickListener()
	{
		@Override
		public void onClick(View v)
		{	
			edtNombre.setEnabled(false);
			edtDireccion.setEnabled(false);
			edtTelefono.setEnabled(false);
			btnGuardar.setEnabled(false);
			btnModificar.setEnabled(true);
			btnCancelarModi.setVisibility(View.GONE);
			btnModificar.setVisibility(View.VISIBLE);
			llFiltroHospital.setVisibility(View.VISIBLE);
			trBotonera1.setVisibility(View.VISIBLE);
			trBotonera2.setVisibility(View.GONE);
			
			viewAnimator1.showNext();
							
			cargarHospitalesSpinner(getHospital());
		}
	};
	
	
	//Metodo para obtener una lista de objetos "Hospital";
	public ArrayList<Hospital> getHospital()
	{
		DAOHospital hospital = new DAOHospital(this);
		ArrayList<Hospital> hospitalList = hospital.getHospital();
		return hospitalList;
	}
	
	//Metodo para transformar la lista de objetos hospital y llenar el spinner con estos;
	public void cargarHospitalesSpinner(ArrayList<Hospital> listaHospital)
	{
		ArrayAdapter<Hospital> adapter = new ArrayAdapter<Hospital>(this, 
				android.R.layout.simple_spinner_item, 
				listaHospital);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spHospital.setAdapter(adapter);
	}
	 
	@Override
	public boolean onCreateOptionsMenu(Menu menu) 
	{
	    MenuInflater inflater = getMenuInflater();
	    inflater.inflate(R.menu.menu_activity, menu);
	    menu.getItem(2).getSubMenu().getItem(0).setTitle("Nuevo Hospital");
	    menu.getItem(2).getSubMenu().getItem(1).setTitle("Modificar Hospital");
	    menu.getItem(2).getSubMenu().getItem(2).setTitle("Ver Hospitales en Mapa");
	    return true;
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) 
	{
		final ProgressDialog pd;
	    switch (item.getItemId()) 
	    {
	        case R.id.mnVerTodos:
	        	
	        	pd = ProgressDialog.show(ActivityHospital.this, 
	                    "", "Cargando..", true);
				new Thread(new Runnable()
				{
					@Override
					public void run()
					{
						Intent intent = new Intent();
			        	intent.setClass(ActivityHospital.this, ActivityMapHospital.class);
			        	intent.putExtra("opcion",1);
			        	intent.putExtra("hospital", hospital);
			        	startActivity(intent);
						pd.dismiss();				
					}
				}).start();				
				return true;
	        
//	        case R.id.comoLlegar_Opc1:
//	        	
//	        	pd = ProgressDialog.show(ActivityHospital.this, 
//	                    "", "Cargando..", true);
//				new Thread(new Runnable()
//				{
//					public void run()
//					{						
//						Intent intent = new Intent();
//			        	intent.setClass(ActivityHospital.this, ActivityMapHospital.class);
//			        	intent.putExtra("opcion",3);
//			        	intent.putExtra("modo",1);
//			        	intent.putExtra("hospital", hospital);
//			        	startActivity(intent);
//						pd.dismiss();				
//					}
//				}).start();
//	        	
//	            return true;
//	            
//	        case R.id.comoLlegar_Opc2:
//	        	
//	        	pd = ProgressDialog.show(ActivityHospital.this, 
//	                    "", "Cargando..", true);
//				new Thread(new Runnable()
//				{
//					public void run()
//					{						
//						Intent intent = new Intent();
//			        	intent.setClass(ActivityHospital.this, ActivityMapHospital.class);
//			        	intent.putExtra("opcion",3);
//			        	intent.putExtra("modo",2);
//			        	intent.putExtra("hospital", hospital);
//			        	startActivity(intent);
//						pd.dismiss();				
//					}
//				}).start();
//	        	
//	            return true;
	        
	        case R.id.mnMas:

	            return true;
	            
//	        case R.id.SubMnu_Opc1:
//	            trBotonera1.setVisibility(View.GONE);
//	            trBotonera2.setVisibility(View.VISIBLE);
//	            llFiltroHospital.setVisibility(View.GONE);
//	            
//	            edtNombre.setEnabled(true);
//	            edtNombre.setText("");
//				edtDireccion.setEnabled(true);
//				edtDireccion.setText("");
//				edtTelefono.setEnabled(true);
//				edtTelefono.setText("");				
//	        	
//	        	viewAnimator1.setOutAnimation(this, android.R.anim.slide_out_right);
//	        	viewAnimator1.setInAnimation(this, android.R.anim.slide_in_left);
//	        	viewAnimator1.showNext();
//	            return true;
//	            
//	        case R.id.SubMnu_Opc2:
//	            trBotonera1.setVisibility(View.VISIBLE);
//	            trBotonera2.setVisibility(View.GONE);
//	            llFiltroHospital.setVisibility(View.VISIBLE);
//	            
////	            edtNombre.setEnabled(true);
////	            edtNombre.setText("");
////				edtDireccion.setEnabled(true);
////				edtDireccion.setText("");
////				edtTelefono.setEnabled(true);
////				edtTelefono.setText("");				
//	        	
//	        	viewAnimator1.setOutAnimation(this, android.R.anim.slide_out_right);
//	        	viewAnimator1.setInAnimation(this, android.R.anim.slide_in_left);
//	        		        	
//	        	viewAnimator1.showNext();
//	        	
//	            return true;
//	            
//	        case R.id.SubMnu_Opc3:
//	        	pd = ProgressDialog.show(ActivityHospital.this, "", "Cargando..", true);
//				new Thread(new Runnable()
//				{
//					public void run()
//					{
////						ArrayList<Hospital> hospital = getHospital();
//						Intent intent = new Intent();
//			        	intent.setClass(ActivityHospital.this, ActivityMapHospital.class);
//			        	intent.putExtra("opcion",2);
////			        	intent.putExtra("hospital", hospital);
//			        	startActivity(intent);
//						pd.dismiss();
//					}
//				}).start();	        
//	            return true;
	        
	        default:
	            return super.onOptionsItemSelected(item);
	    }
	}
}
